﻿#include<iostream>
using namespace std;
int main() {
	int* a{};
	shared_ptr<int> ptrA{ make_shared<int>(5) };
	shared_ptr<int> ptrB{ ptrA };
	shared_ptr<int> ptrC{ ptrA };

	shared_ptr<int[]> ptrD{ new int[5] {1,2,3,4,5} };
	shared_ptr<int> ptrE{ new int(5) };
	cout << ptrD << " " << ptrD[1] << endl;//000002259B3913A0 2
	cout << ptrE << " " << *ptrE << endl;//000001748A3B6A40 5

	cout << ptrA << " " << *ptrA << endl;//000002984058F2A0 5
	cout << ptrB << " " << *ptrB << endl;//000002984058F2A0 5

	cout << ptrB.use_count() << endl;//查看当前内存地址有几个共享指针在指

	cout << ptrA.unique() << endl;//查看当前共享指针是否唯一指向当前的内存地址（C++17已经取消使用）

	ptrC.reset();//将当前共享指针设置为nullptr，如果当前智能指针是最后一个拥有该指针的对象，那么将会释放内存
}